//
//
//
//
//
//
// NixTimer.C
//

#include "common.h"
#include "NixTimer.h"

NixTimer::NixTimer() : _interval(1), _isRun(false){};
NixTimer::NixTimer(U32 useconds) : _interval(useconds), _isRun(false){};
NixTimer::~NixTimer()
{
	if(_isRun)
		Stop();
}

void NixTimer::Start()
{
	if(_isRun)
		return;
	pthread_create(&_threadID, NULL, NixTimer::ThreadEntry, this);
	_isRun = true;
}


void NixTimer::Stop()
{
	if(!_isRun)
		return;
	pthread_cancel(_threadID);
	_isRun = false;
}

U32 NixTimer::Interval(U32 useconds)
{
	_interval = useconds;
	return _interval;
}

U32 NixTimer::Interval(void)
{
	return _interval;
}


void* NixTimer::ThreadEntry(void* p)
{
	NixTimer* pIns = (NixTimer*)p;
	while(true)
	{
		usleep(pIns->_interval);
		pIns->TimerSvc();
	}
}
